package com.fastaccess.helper;
import android.support.annotation.IntRange;
import android.support.design.widget.TextInputLayout;
import android.support.test.espresso.UiController;
import android.support.test.espresso.ViewAction;
import android.view.View;
import org.hamcrest.Description;
import org.hamcrest.Matcher;
import org.hamcrest.TypeSafeMatcher;
import it.sephiroth.android.library.bottomnavigation.BottomNavigation;
import static android.support.test.espresso.matcher.ViewMatchers.isAssignableFrom;
/**
* Created by Kosh on 05 May 2017, 9:23 PM
*/
public class TestHelper {
public static Matcher<View> textInputLayoutHasHint(final String expectedErrorText) {
return new TypeSafeMatcher<View>() {
@Override public boolean matchesSafely(View view) {
if (!(view instanceof TextInputLayout)) {
return false;
}
CharSequence error = ((TextInputLayout) view).getHint();
return error != null && expectedErrorText.equals(error.toString());
}
@Override public void describeTo(Description description) {}
};
}
public static Matcher<View> textInputLayoutHasError(final String expectedErrorText) {
return new TypeSafeMatcher<View>() {
@Override public boolean matchesSafely(View view) {
if (!(view instanceof TextInputLayout)) {
return false;
}
CharSequence error = ((TextInputLayout) view).getError();
return error != null && expectedErrorText.equals(error.toString());
}
@Override public void describeTo(Description description) {}
};
}
public static Matcher<View> bottomNavSelection(@IntRange(from = 0, to = 3) final int position) {
return new TypeSafeMatcher<View>() {
@Override public boolean matchesSafely(View view) {
return view instanceof BottomNavigation && position == ((BottomNavigation) view).getSelectedIndex();
}
@Override public void describeTo(Description description) {}
};
}
public static ViewAction bottomNavAction(@IntRange(from = 0, to = 3) final int index) {
return new ViewAction() {
@Override public Matcher<View> getConstraints() {
return isAssignableFrom(BottomNavigation.class);
}
@Override public String getDescription() {
return "BottomNavigation";
}
@Override public void perform(UiController uiController, View view) {
((BottomNavigation) view).setSelectedIndex(index, false);
}
};
}
}